#pragma once
#define ElemType int
#define MyHead -1
// LinkStack
typedef struct LinkNode {
    ElemType data;
    struct LinkNode* next;
}LSNode, * LinkStack;

bool InitStack_Head(LinkStack& S);

bool InitStack(LinkStack& S);

bool Push_Head(LinkStack& S, ElemType x);

bool Push(LinkStack& S, ElemType x);

bool Pop_Head(LinkStack& S, ElemType& x);

bool Pop(LinkStack& S, ElemType& x);

bool GetTop_Head(LinkStack& S, ElemType& x);

bool GetTop(LinkStack S, ElemType& x);

bool IsEmpty_Head(LinkStack S);

bool IsEmpty(LinkStack S);